package collection;
import java.util.ArrayList;
import java.util.List;

/**
 * @author xiaoming
 * @version 1.0
 * @date 2019-03-04 13:31
 * 6.5 集合与泛型
 **/
public class CollectionGeneric {
    public static void main(String[] args) {
        // 泛型出现前
        List list1 = new ArrayList();
        list1.add(new Object());
        list1.add(new Integer(111));
        list1.add(new String("hello list1"));
        System.out.println(list1.toString());

        // 引用赋值, 增加泛型限制
        List<Object> list2 = list1;
        list2.add(new Object());
        list2.add(new Integer(222));
        list2.add(new String("hello list2"));
        System.out.println(list2.toString());

        // 增加泛型
        List<Integer> list3 = list1;
        System.out.println(list3.toString());
        list3.add(new Integer(333));

        // 下面两行编译出错, 只能加入Integer类型参数
        //list3.add(new Object());
        //list3.add(new String("hello list3"));

        // 增加通配符
        List<?> list4 = list1;
        // 编译出错, 不允许添加任何元素
        //list4.add(new Object());
        // 允许删除和清除元素
        list1.remove(0);
        list4.clear();
        System.out.println(list1.toString());
        System.out.println(list4.toString());

        List<Integer> integerList = new ArrayList<Integer>(3);
        integerList.add(2333);
        // List<Object> 不允许给List<Integer>赋值
        //List<Object> objectList = integerList;


    }
}
